package br.com.felipe.agendamento.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import br.com.felipe.agendamento.entity.EmailDto;
import br.com.felipe.agendamento.entity.MedicoDto;
import br.com.felipe.agendamento.entity.TelefoneDto;

@Repository("medicoDao")
public class MedicoDaoImpl extends BaseDaoImpl<MedicoDto> implements MedicoDao {

	public MedicoDaoImpl() {
		super(MedicoDto.class);
	}

	@Override
	public void adicionar(MedicoDto t) {
		List<EmailDto> listaEmail = t.getPessoaDto().getListaEmail();
		List<TelefoneDto> listaTelefone = t.getPessoaDto().getListaTelefones();

		for(EmailDto e : listaEmail){
			if(e.getPessoaDto() == null){
				e.setPessoaDto(t.getPessoaDto());
			}
		}

		for(TelefoneDto tel : listaTelefone){
			if(tel.getPessoaDto() == null){
				tel.setPessoaDto(t.getPessoaDto());
			}
		}

		super.adicionar(t);
	}

	@Override
	public List<MedicoDto> getListaMedicos(String nome, String crm) {
		Criteria criteriaMedico = getCriteria();
		
		if(!"".equals(nome) && nome != null){
			criteriaMedico.add(Restrictions.like("nome", nome.trim()).ignoreCase());
		}
		
		if(!"".equals(crm) && crm != null){
			criteriaMedico.add(Restrictions.like("crm", nome.trim()).ignoreCase());
		}
		return super.listarComFiltros(criteriaMedico);
		
	}
	
}
